package com.dyz.leetcode;

import java.util.Arrays;

public class FindUnsortedSubarray581 {
    //方法一：排序比较位子是否相等
    public int findUnsortedSubarray(int[] nums) {
        int len = nums.length;
        int [] nums1 = Arrays.copyOf(nums, len);
        Arrays.sort(nums1);
        int left = 0, right=len-1;
        for(int i=0;i<len;i++, left++){
            if(nums[i]!=nums1[left]){
                break;
            }
        }
        for(int j=len-1; j>=0; j--,right--){
            if(nums[j]!=nums1[right]){
                break;
            }
        }
        if(left==len && right==-1){
            return 0;
        }
        return right-left+1;
    }
    //方法二：最大值 最小值更新
    public int findUnsortedSubarray1(int[] nums) {
        int len = nums.length;
        int l = 0, r = len-1;
        int max = nums[0], min = nums[len-1];
        //查找最大值
        for(int i=0; i<len; i++){
            if(max<=nums[i]){
                max = nums[i];
            }else {
                l = i;
            }
        }
        for(int j = len-1; j>=0; j--){
            if(min>=nums[j]){
                min = nums[j];
            }else {
                r = j;
            }
        }
        //顺序排序
        if(l==0 && r==len-1){
            return 0;
        }
        return l-r+1;
    }
}
